<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>async和await</title>
</head>

<body>
    <script>
        /* 
         async 内部可以使用await,也可以不使用await, 因为调用时可以使用 then，catch方法
         返回值是一个promise对象
        */
        async function fn() {

        }
        // console.log(fn())
        //返回一个失败的对象
        async function fn1() {
            throw new Error('出错了')
        }

        // fn1().catch(error => {
        //     console.log(error);
        // })
        //若函数返回一个promise对象，返回值取决于这个对象是resolve还是reject
        // let a = async function() {
        //     return new Promise((resolve, reject) => {
        //         resolve('成功')
        //     })
        // }
        // a().then(value => {
        //     console.log(value);
        // })

        /* 
         await 相当于一个运算符 ，右侧接一个值一般是个promise对象
         await 表达式会阻塞后面代码，等待promise对象的resolve值
         必须写在async 函数中
         await 的promise失败了就会抛出异常 需要try-catch 捕获异常
        */
        const p = new Promise((resolve, reject) => {
            resolve('成功')
        })
        const p1 = new Promise((resolve, reject) => {
            reject('失败')
        })
        async function main() {
            try {
                let result = await p1
            } catch (e){
                console.log(e);

            }
            console.log(222);
        }
        main();
        /*  */
    </script>
</body>

</html>